package com.aula02.hibernate.crud;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import com.aula02.hibernate.model.Cliente;
import com.aula02.hibernate.model.Venda;
@SuppressWarnings("all")
public class Crud {

	private EntityManager entityManager;
	
	public Crud(){
		EntityManagerFactory emf = Persistence.createEntityManagerFactory("Aula02PU");
		entityManager = emf.createEntityManager();
	}
	
	public EntityManager getEntityManager(){
		return entityManager;
	}
	
	public void inserirCliente(String nomeCliente, String tipo, String cpfCnpj){
		Cliente cliente = new Cliente();
		cliente.setDocumento(cpfCnpj);
		cliente.setNome(nomeCliente);
		cliente.setTipo(tipo);
		
		entityManager.getTransaction().begin();
		entityManager.persist(cliente);
		entityManager.getTransaction().commit();
	}
	
	public void removerCliente(Integer codigo){
		Cliente cliente = null;
		cliente = entityManager.find(Cliente.class, codigo);
		entityManager.getTransaction().begin();
		entityManager.remove(cliente);
		entityManager.getTransaction().commit();
	}
	
	public List<Cliente> buscarClientesNome(String nome){
		Query query = entityManager.createQuery("SELECT c FROM Cliente c " +
												"WHERE c.nome LIKE :nome");
		query.setParameter("nome", nome+"%");
		List<Cliente> listaClientes =  query.getResultList();
		return listaClientes;
	}
	
	
	
	public Cliente buscarCliente(Integer codigo){
		Cliente cliente = entityManager.find(Cliente.class, codigo); 
		return cliente;
	}
	
	public void inserirVenda(Venda venda){
		entityManager.getTransaction().begin();
		entityManager.persist(venda);
		entityManager.getTransaction().commit();
	}
	
	public void alterarCliente(Integer codigo, String nomeCliente, 
												String tipo, String cpfCnpj){
		Cliente cliente = new Cliente();
		cliente.setDocumento(cpfCnpj);
		cliente.setNome(nomeCliente);
		cliente.setTipo(tipo);
		cliente.setCodigo(codigo);
		
		entityManager.getTransaction().begin();
		entityManager.merge(cliente);
		entityManager.getTransaction().commit();
	}
	
	public static void main(String args[]){
		Crud crud = new Crud();
		Venda venda = new Venda();
		Cliente cliente = new Cliente();
		
		cliente.setNome("Cliente novo");
		cliente.setTipo("F");
		
		venda.setCliente(cliente);
		venda.setValorTotal(32300.8);
		crud.inserirVenda(venda);
		

//		Venda venda = new Venda();
//		Cliente cliente = crud.buscarCliente(1);
//		
//		for(Venda vendas : cliente.getVendas()){
//			System.out.println("Valor Venda: "+ vendas.getValorTotal());
//		}

	}
	
}
